<article id="wikiArticle">
<div class="boxed translate-rendered">
<div></div>
<p>ECMAScript 2015 (6th Edition)是目前 <span>ECMAScript 语言规范的标准</span>。通常被称为"ES2015"，在<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey </a>中它规定了 JavaScript 的实现标准，SpiderMonkey 是一个 JavaScript 引擎，被广泛用于火狐浏览器等谋智的众多产品中。</p>
<p>"ES.next" 的第一份工作草案 (基于 <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5.1</a>) 发布于 2011 年 7 月 12 日，代号为 "ES.next" 或 "Harmony"。2014 年 8 月，ECMAScript 2015 草案规范停止增加新的功能，开始进入稳定期与 bug 修复阶段。最终，ECMA-262 Edition 6 于 2015 年 6 月 17 日由 ECMA 联合大会 (ECMA General Assembly) 作为标准正式发布。它同时也是国际工业标准 ISO/IEC 16262:2016。</p>
<p>你可以通过<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" rel="noopener"> ecma-international.org</a> 免费下载规范的 <a class="external" href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf" rel="noopener">PDF</a> 和 <a class="external" href="http://www.ecma-international.org/ecma-262/6.0/index.html" rel="noopener">HTML </a>版本。</p>
<p><a class="external" href="https://mail.mozilla.org/listinfo/es-discuss" rel="noopener">es-discuss</a> 是 ECMAScript 规范的讨论与反馈渠道。</p>
<h2 id="Firefox_已经支持的特性">Firefox 已经支持的特性</h2>
<p>这里列出的功能已经在 Firefox 中支持；每个特性后面标注了具体实现的浏览器版本。</p>
<h2 id="标准库">标准库</h2>
<h3 id="Array_对象的补充"><code>Array</code> 对象的补充</h3>
<ul>
<li><a href="Reference/Array" title="entries() 方法返回一个新的Array Iterator对象，该对象包含数组中每个索引的键/值对。"><code>Array</code></a> iteration with <code>for...of</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/13">Firefox 13</a>)</li>
<li><a href="Reference/Global_Objects/Array/from" title="Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。"><code>Array.from()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/32">Firefox 32</a>)</li>
<li><a href="Reference/Global_Objects/Array/of" title="Array.of() 方法创建一个具有可变数量参数的新数组实例，而不考虑参数的数量或类型。"><code>Array.of()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Array/fill" title="fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。"><code>Array.prototype.fill()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/31">Firefox 31</a>)</li>
<li><a href="Reference/Global_Objects/Array/find" title="find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。"><code>Array.prototype.find()</code></a>, <a href="Reference/Global_Objects/Array/findIndex" title="findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。"><code>Array.prototype.findIndex()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Array/entries" title="entries() 方法返回一个新的Array Iterator对象，该对象包含数组中每个索引的键/值对。"><code>Array.prototype.entries()</code></a>,<br/>
<a href="Reference/Global_Objects/Array/keys" title="keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。"><code>Array.prototype.keys()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/28">Firefox 28</a>)</li>
<li><a href="Reference/Global_Objects/Array/copyWithin" title="改变了的数组。"><code>Array.prototype.copyWithin()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/32">Firefox 32</a>)</li>
<li><a href="Reference/Global_Objects/Array/@@species" title="Array[@@species]访问器属性返回 Array 的构造函数。"><code>get Array[@@species]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/48">Firefox 48</a>)</li>
</ul>
<h3 id="新的_Map_和_Set，以及_WeakMap_和_WeakSet_对象">新的 <code>Map 和 Set，以及 WeakMap</code> <code>和 WeakSet</code> <code>对象</code></h3>
<ul>
<li><a href="Reference/Map" title="此页面仍未被本地化, 期待您的翻译!"><code>Map</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/13">Firefox 13</a>)

  <ul>
<li><a href="Reference/Map" title="此页面仍未被本地化, 期待您的翻译!"><code>Map</code></a> iteration with <code>for...of</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/17">Firefox 17</a>)</li>
<li><a href="Reference/Global_Objects/Map/forEach" title="forEach() 方法将会以插入顺序对 Map 对象中的每一个键值对执行一次参数中提供的回调函数。"><code>Map.prototype.forEach()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Map/entries" title="entries() ?方法返回一个新的包含 [key, value] ?对的 Iterator ?对象，返回的迭代器的迭代顺序与 Map 对象的插入顺序相同。"><code>Map.prototype.entries()</code></a>,<br/>
<a href="Reference/Global_Objects/Map/keys" title="keys() 返回一个新的 Iterator 对象。它包含按照顺序插入Map对象中每个元素的key值。"><code>Map.prototype.keys()</code></a>,<br/>
<a href="Reference/Global_Objects/Map/values" title="一个新的 Map 可迭代对象."><code>Map.prototype.values()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/20">Firefox 20</a>)</li>
<li>Constructor argument: <code>new <a href="Reference/Map" title="此页面仍未被本地化, 期待您的翻译!"><code>Map</code></a>(null)</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
<li>Monkey-patched <code>set()</code> in Constructor (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
<li><a href="Reference/Global_Objects/Map/@@species" title="Map[@@species] 访问器属性会返回一个 Map 构造函数."><code>get Map[@@species]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
</ul>
</li>
<li><a href="Reference/Global_Objects/Set" title="Set 对象允许你存储任何类型的唯一值，无论是原始值或者是对象引用。"><code>Set</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/13">Firefox 13</a>)
  <ul>
<li><a href="Reference/Global_Objects/Set" title="Set 对象允许你存储任何类型的唯一值，无论是原始值或者是对象引用。"><code>Set</code></a> iteration with <code>for...of</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/17">Firefox 17</a>)</li>
<li><a href="Reference/Global_Objects/Set/forEach" title="forEach 方法根据集合中元素的顺序，对每个元素都执行提供的 callback 函数一次。"><code>Set.prototype.forEach()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Set/entries" title="entries() 方法返回一个新的迭代器对象 ，这个对象的元素是类似 [value, value] 形式的数组，value 是集合对象中的每个元素，迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key，然而，为了与 Map 对象的 API 形式保持一致，故使得每一个 entry 的 key 和 value 都拥有相同的值，因而最终返回一个 [value, value] 形式的数组。"><code>Set.prototype.entries()</code></a>,<br/>
<a class="new" href="Reference/Global_Objects/Set/keys" rel="nofollow" title="此页面仍未被本地化, 期待您的翻译!"><code>Set.prototype.keys()</code></a>,<br/>
<a href="Reference/Global_Objects/Set/values" title="values() 方法返回一个 Iterator  对象，这个对象以插入 Set 对象的顺序包含了原 Set 对象里的每个元素。"><code>Set.prototype.values()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/24">Firefox 24</a>)</li>
<li>Constructor argument: <code>new <a href="Reference/Global_Objects/Set" title="Set 对象允许你存储任何类型的唯一值，无论是原始值或者是对象引用。"><code>Set</code></a>(null)</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
<li>Monkey-patched <code>add()</code> in Constructor (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
<li><a href="Reference/Global_Objects/Set/@@species" title="Set[@@species] 访问器属性返回Set的构造函数."><code>get Set[@@species]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
</ul>
</li>
<li><a href="Reference/WeakMap" title="此页面仍未被本地化, 期待您的翻译!"><code>WeakMap</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/6">Firefox 6</a>)
  <ul>
<li><a href="Reference/Global_Objects/WeakMap/clear" title="clear()用来从 WeakMap对象中移除所有元素。但不再是ECMAScript和它的实现部分。"><code>WeakMap.clear()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/20">Firefox 20</a>)</li>
<li>optional iterable argument in <a href="Reference/WeakMap" title="此页面仍未被本地化, 期待您的翻译!"><code>WeakMap</code></a> constructor (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
<li>Constructor argument: <code>new <a href="Reference/WeakMap" title="此页面仍未被本地化, 期待您的翻译!"><code>WeakMap</code></a>(null)</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
<li>Monkey-patched <code>set()</code> in Constructor (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
</ul>
</li>
<li><a href="Reference/Global_Objects/WeakSet" title="WeakSet 对象允许你将弱保持对象存储在一个集合中。"><code>WeakSet</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/34">Firefox 34</a>)
  <ul>
<li>Constructor argument: <code>new <a href="Reference/Global_Objects/WeakSet" title="WeakSet 对象允许你将弱保持对象存储在一个集合中。"><code>WeakSet</code></a>(null)</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
<li>Monkey-patched <code>add()</code> in Constructor (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/37">Firefox 37</a>)</li>
</ul>
</li>
</ul>
<h3 id="新的_Math_方法"><code>新的 Math 方法</code></h3>
<ul>
<li><a href="Reference/Global_Objects/Math/imul" title="该函数返回两个参数的类C的32位整数乘法运算的运算结果."><code>Math.imul()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/20">Firefox 20</a>)</li>
<li><a href="Reference/Global_Objects/Math/clz32" title="Math.clz32() 函数返回一个数字在转换成 32 无符号整形数字的二进制形式后, 开头的 0 的个数, 比如 1000000 转换成 32 位无符号整形数字的二进制形式后是 00000000000011110100001001000000, 开头的 0 的个数是 12 个, 则 Math.clz32(1000000) 返回 12."><code>Math.clz32()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/31">Firefox 31</a>)</li>
<li><a href="Reference/Global_Objects/Math/fround" title="Math.fround() 可以将任意的数字转换为离它最近的单精度浮点数形式的数字。"><code>Math.fround()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/26">Firefox 26</a>)</li>
<li><a href="Reference/Global_Objects/Math/log10" title="Math.log10() 函数返回一个数字以 10 为底的对数."><code>Math.log10()</code></a>, <a href="Reference/Global_Objects/Math/log2" title="Math.log2() 函数返回一个数字以 2 为底的对数."><code>Math.log2()</code></a>, <a href="Reference/Global_Objects/Math/log1p" title="Math.log1p() 函数返回一个数字加1后的自然对数 (底为 E), 既log(x+1)."><code>Math.log1p()</code></a>, <a href="Reference/Global_Objects/Math/expm1" title="Math.expm1() 函数返回 Ex - 1, 其中 x 是该函数的参数, E 是自然对数的底数 2.718281828459045."><code>Math.expm1()</code></a>, <a href="Reference/Global_Objects/Math/cosh" title="Math.cosh() 函数返回数值的双曲余弦函数, 可用 constant e 表示:"><code>Math.cosh()</code></a>, <a href="Reference/Global_Objects/Math/sinh" title="Math.sinh() 函数返回一个数字(单位为角度)的双曲正弦值."><code>Math.sinh()</code></a>, <a href="Reference/Global_Objects/Math/tanh" title="Math.tanh() 函数将会返回一个数的双曲正切函数值，计算如下:"><code>Math.tanh()</code></a>, <a class="new" href="Reference/Global_Objects/Math/acosh" rel="nofollow" title="此页面仍未被本地化, 期待您的翻译!"><code>Math.acosh()</code></a>, <a href="Reference/Global_Objects/Math/asinh" title="Math.asinh() 函数返回给定数字的反双曲正弦值, 即："><code>Math.asinh()</code></a>, <a href="Reference/Global_Objects/Math/atanh" title="Math.atanh() 函数返回一个数值反双曲正切值, 即："><code>Math.atanh()</code></a>, <a href="Reference/Global_Objects/Math/hypot" title="Math.hypot() 函数返回它的所有参数的平方和的平方根，即："><code>Math.hypot()</code></a>, <a href="Reference/Global_Objects/Math/trunc" title="Math.trunc() 方法会将数字的小数部分去掉，只保留整数部分。"><code>Math.trunc()</code></a>, <a href="Reference/Global_Objects/Math/sign" title="Math.sign() 函数返回一个数字的符号, 指示数字是正数，负数还是零。"><code>Math.sign()</code></a>, <a href="Reference/Global_Objects/Math/cbrt" title="Math.cbrt() 函数返回任意数字的立方根."><code>Math.cbrt()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
</ul>
<h3 id="Number_对象的补充"><code>Number</code> 对象的补充</h3>
<ul>
<li><a href="Reference/Global_Objects/Number/isNaN" title="Number.isNaN() 方法确定传递的值是否为 NaN和其类型是 Number。它是原始的全局isNaN()的更强大的版本。"><code>Number.isNaN()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/16">Firefox 16</a>)</li>
<li><a href="Reference/Global_Objects/Number/isFinite" title="Number.isFinite() 方法用来检测传入的参数是否是一个有穷数（finite number）。"><code>Number.isFinite()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/16">Firefox 16</a>)</li>
<li><a href="Reference/Global_Objects/Number/isInteger" title="Number.isInteger() 方法用来判断给定的参数是否为整数。"><code>Number.isInteger()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/16">Firefox 16</a>)</li>
<li><a href="Reference/Global_Objects/Number/parseInt" title="Number.parseInt() 方法可以根据给定的进制数把一个字符串解析成整数。"><code>Number.parseInt()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Number/parseFloat" title="Number.parseFloat() 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同，并且处于 ECMAScript 6 规范中（用于全局变量的模块化）。"><code>Number.parseFloat()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Number/EPSILON" title="Number.EPSILON 属性表示 1 与Number可表示的大于 1 的最小的浮点数之间的差值。"><code>Number.EPSILON</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="Reference/Global_Objects/Number/MAX_SAFE_INTEGER" title="Number.MAX_SAFE_INTEGER 常量表示在 JavaScript 中最大的安全整数（maxinum safe integer)（253 - 1）。"><code>Number.MAX_SAFE_INTEGER</code></a>, <a href="Reference/Global_Objects/Number/MIN_SAFE_INTEGER" title="Number.MIN_SAFE_INTEGER 代表在 JavaScript中最小的安全的integer型数字 (-(253 - 1))."><code>Number.MIN_SAFE_INTEGER</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/31">Firefox 31</a>)</li>
<li><a href="Reference/Global_Objects/Number/isSafeInteger" title="Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”（safe integer）。一个安全整数是一个符合下面条件的整数："><code>Number.isSafeInteger()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/32">Firefox 32</a>)</li>
</ul>
<h3 id="Object_对象的补充"><code>Object</code> 对象的补充</h3>
<ul>
<li><a class="new" href="Reference/Global_Objects/Object/__proto__" rel="nofollow" title="此页面仍未被本地化, 期待您的翻译!"><code>Object.prototype.__proto__</code></a> 已经被标准化</li>
<li><a href="Reference/Global_Objects/Object/is" title="Object.is()方法判断两个值是否是相同的值。"><code>Object.is()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/22">Firefox 22</a>)</li>
<li><a href="Reference/Global_Objects/Object/setPrototypeOf" title="如果对象的[[Prototype]]被修改成不可扩展(通过 Object.isExtensible()查看)，就会抛出 TypeError异常。如果prototype参数不是一个对象或者null(例如，数字，字符串，boolean，或者 undefined)，则什么都不做。否则，该方法将obj的[[Prototype]]修改为新的值。"><code>Object.setPrototypeOf()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/31">Firefox 31</a>)</li>
<li><a href="Reference/Global_Objects/Object/assign" title="Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。"><code>Object.assign()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/34">Firefox 34</a>)</li>
<li><a href="Reference/Global_Objects/Object/getOwnPropertySymbols" title="Object.getOwnPropertySymbols() 方法返回一个给定对象自身的所有 Symbol 属性的数组。"><code>Object.getOwnPropertySymbols()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/33">Firefox 33</a>)</li>
</ul>
<h3 id="Date_对象的补充"><code>Date</code> 对象的补充</h3>
<ul>
<li><a href="Reference/Global_Objects/Date/prototype" title="Date.prototype 属性表示Date构造函数的原型。"><code>Date.prototype</code></a> is an ordinary object (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
<li>generic <a href="Reference/Global_Objects/Date/toString" title="toString() 方法返回一个字符串，表示该Date对象。"><code>Date.prototype.toString</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
<li><a href="Reference/Global_Objects/Date/@@toPrimitive" title="[@@toPrimitive]() 方法可以转换一个 Date 对象到一个原始值。"><code>Date.prototype[@@toPrimitive]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/44">Firefox 44</a>)</li>
</ul>
<h3 id="新的_Promise_对象">新的 <code>Promise 对象</code></h3>
<ul>
<li><a href="Reference/Global_Objects/Promise" title="Promise 对象用于表示一个异步操作的最终状态（完成或失败），以及其返回的值。"><code>Promise</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/24">Firefox 24</a>,  在 <a href="https://developer.mozilla.org/en-US/Firefox/Releases/29">Firefox 29</a> 中默认启用)</li>
</ul>
<h3 id="新的_Reflect_对象">新的 <code>Reflect 对象</code></h3>
<ul>
<li><a href="Reference/Global_Objects/Reflect" title="Reflect 是一个内置的对象，它提供拦截 JavaScript 操作的方法。这些方法与处理器对象的方法相同。Reflect不是一个函数对象，因此它是不可构造的。"><code>Reflect</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/42">Firefox 42</a>)</li>
</ul>
<h3 id="RegExp_对象的补充"><code>RegExp</code> 对象的补充</h3>
<ul>
<li><a href="Reference/RegExp" title="此页面仍未被本地化, 期待您的翻译!"><code>RegExp</code></a> sticky (y) flag (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/38">Firefox 38</a>)</li>
<li><a href="Reference/RegExp" title="此页面仍未被本地化, 期待您的翻译!"><code>RegExp</code></a> unicode (u) flag (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/46">Firefox 46</a>)</li>
<li>generic <a href="Reference/Global_Objects/RegExp/toString" title="toString() 返回一个表示该正则表达式的字符串。"><code>RegExp.prototype.toString</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/39">Firefox 39</a>)</li>
<li><a href="Reference/Global_Objects/RegExp/@@match" title="对正则表达式匹配字符串时，[@@match]()方法用于获取匹配结果。"><code>RegExp.prototype[@@match]()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/RegExp/@@replace" title="[@@replace]() 方法会在一个字符串中用给定的替换器，替换所有符合正则模式的匹配项，并返回替换后的新字符串结果。用来替换的参数可以是一个字符串或是一个针对每次匹配的回调函数。"><code>RegExp.prototype[@@replace]()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/RegExp/@@search" title="[@@search]() 方法执行了一个在给定字符串中的一个搜索以取得匹配正则模式的项。"><code>RegExp.prototype[@@search]()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/RegExp/@@split" title="[@@split]() 方法切割 String 对象为一个其子字符串的数组 。"><code>RegExp.prototype[@@split]()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/RegExp/@@species" title="RegExp[@@species] 访问器属性返回RegExp 的构造器。"><code>get RegExp[@@species]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
</ul>
<h3 id="String_对象的补充"><code>String</code> 对象的补充</h3>
<ul>
<li><a href="Reference/Global_Objects/String/fromCodePoint" title="String.fromCodePoint() 静态方法返回使用指定的代码点序列创建的字符串。"><code>String.fromCodePoint()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/29">Firefox 29</a>)</li>
<li><a href="Reference/Global_Objects/String/codePointAt" title="codePointAt() 方法返回 一个 Unicode 编码点值的非负整数。"><code>String.prototype.codePointAt()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/29">Firefox 29</a>)</li>
<li><a href="Reference/Global_Objects/String/startsWith" title="startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的，根据判断结果返回 true 或 false。"><code>String.prototype.startsWith()</code></a>, <a href="Reference/Global_Objects/String/endsWith" title="endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的，根据判断结果返回 true 或 false。"><code>String.prototype.endsWith()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/17">Firefox 17</a>)</li>
<li><a href="Reference/Global_Objects/String/includes" title="includes() 方法用于判断一个字符串是否包含在另一个字符串中，根据情况返回 true 或 false。"><code>String.prototype.includes()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/40">Firefox 40</a>) (formerly <code>String.prototype.contains()</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/17">Firefox 17</a>))</li>
<li><a href="Reference/Global_Objects/String/repeat" title="repeat() 构造并返回一个新字符串，该字符串包含被连接在一起的指定数量的字符串的副本。"><code>String.prototype.repeat()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/24">Firefox 24</a>)</li>
<li><a href="Reference/Global_Objects/String/normalize" title="normalize() 方法会按照指定的一种 Unicode 正规形式将当前字符串正规化."><code>String.prototype.normalize()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/31">Firefox 31</a>)</li>
<li><a href="Reference/Global_Objects/String/raw" title="String.raw() 是一个模板字符串的标签函数，它的作用类似于 Python 中的字符串前缀 r 和 C# 中的字符串前缀 @，是用来获取一个模板字符串的原始字面量值的。"><code>String.raw()</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/34">Firefox 34</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Unicode_code_point_escapes">\u{XXXXXX}</a> Unicode code point escapes (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/40">Firefox 40</a>)</li>
</ul>
<h3 id="新的_Symbol_对象">新的 <code>Symbol 对象</code></h3>
<ul>
<li><a href="Reference/Global_Objects/Symbol" title='Symbol()函数会返回symbol类型的值，该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象；它的静态方法会暴露全局的symbol注册，且类似于内建对象类，但作为构造函数来说它并不完整，因为它不支持语法："new Symbol()"。'><code>Symbol</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/iterator" title="Symbol.iterator 为每一个对象定义了默认的迭代器。该迭代器可以被 for...of 循环使用。"><code>Symbol.iterator</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/for" title="Symbol.for(key) 方法会根据给定的键 key，来从运行时的 symbol 注册表中找到对应的 symbol，如果找到了，则返回它，否则，新建一个与该键关联的 symbol，并放入全局 symbol 注册表中。"><code>Symbol.for()</code></a> - global Symbol registry (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/match" title="Symbol.match 指定了匹配的是正则表达式而不是字符串。String.prototype.match() 方法会调用此函数。"><code>Symbol.match</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/40">Firefox 40</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/species" title="知名的 Symbol.species 是个函数值属性，其被构造函数用以创建派生对象。"><code>Symbol.species</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/toPrimitive" title="Symbol.toPrimitive 指将被调用的指定函数值的属性转换为相对应的原始值。"><code>Symbol.toPrimitive</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/44">Firefox 44</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/@@toPrimitive" title="[@@toPrimitive]() 方法可将 Symbol 对象转换为原始值。"><code>Symbol.prototype[@@toPrimitive]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/44">Firefox 44</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/replace" title="Symbol.replace 这个属性指定了当一个字符串替换所匹配字符串时所调用的方法。String.prototype.replace() 方法会调用此方法。"><code>Symbol.replace</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/search" title="Symbol.search 指定了一个搜索方法，这个方法接受用户输入的正则表达式，返回该正则表达式在字符串中匹配到的下标，这个方法由以下的方法来调用 String.prototype.search()。"><code>Symbol.search</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/split" title="Symbol.split 指向 一个正则表达式的索引处分割字符串的方法。 这个方法通过 String.prototype.split() 调用。"><code>Symbol.split</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/49">Firefox 49</a>)</li>
<li><a href="Reference/Global_Objects/Symbol/hasInstance" title="Symbol.hasInstance 用于判断某对象是否为某构造器的实例。 因此你可以用它自定义 instanceof 操作符在某个类上的行为。"><code>Symbol.hasInstance</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/50">Firefox 50</a>)</li>
</ul>
<h3 id="Typed_Arrays">Typed Arrays</h3>
<p>Typed arrays 已经合并到 ECMAScript 2015 中，不再具有<a class="external" href="https://www.khronos.org/registry/typedarray/specs/latest/" rel="noopener">自己单独的规范</a>。</p>
<ul>
<li><a href="Reference/Global_Objects/ArrayBuffer" title="The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request."><code>ArrayBuffer</code></a></li>
<li><a href="Reference/Global_Objects/ArrayBuffer/@@species" title="该 ArrayBuffer[@@species] 访问器属性会返回 ArrayBuffer 构造器。"><code>get ArrayBuffer[@@species]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/48">Firefox 48</a>)</li>
<li><a href="Reference/Global_Objects/DataView" title="DataView 视图是一个可以从 ArrayBuffer 对象中读写多种数值类型的底层接口，在读写时不用考虑平台字节序问题。"><code>DataView</code></a></li>
<li><a href="Reference/Global_Objects/Int8Array" title="Int8Array 类型数组表示二进制补码8位有符号整数的数组。内容初始化为0。 一旦建立，你可以使用对象的方法引用数组中的元素，或使用标准数组索引语法( 即，使用括号注释)。"><code>Int8Array</code></a></li>
<li><a href="Reference/Global_Objects/Uint8Array" title="Uint8Array 数组类型表示一个8位无符号整型数组，创建时内容被初始化为0。创建完后，可以以对象的方式或使用数组下标索引的方式引用数组中的元素。"><code>Uint8Array</code></a></li>
<li><a href="Reference/Global_Objects/Uint8ClampedArray" title="Uint8ClampedArray（8位无符号整型固定数组） 类型化数组表示一个由值固定在0-255区间的8位无符号整型组成的数组；如果你指定一个在 [0,255] 区间外的值，它将被替换为0或255；如果你指定一个非整数，那么它将被设置为最接近它的整数。（数组）内容被初始化为0。一旦（数组）被创建，你可以使用对象的方法引用数组里的元素，或使用标准的数组索引语法（即使用方括号标记）。"><code>Uint8ClampedArray</code></a></li>
<li><a href="Reference/Global_Objects/Int16Array" title="The Int16Array typed array represents an array of twos-complement 16-bit signed integers in the platform byte order. If control over byte order is needed, use DataView instead. The contents are initialized to 0. Once established, you can reference elements in the array using the object's methods, or using standard array index syntax (that is, using bracket notation)."><code>Int16Array</code></a></li>
<li><a href="Reference/Global_Objects/Uint16Array" title="The Uint16Array typed array represents an array of 16-bit unsigned integers in the platform byte order. If control over byte order is needed, use DataView instead. The contents are initialized to 0. Once established, you can reference elements in the array using the object's methods, or using standard array index syntax (that is, using bracket notation)."><code>Uint16Array</code></a></li>
<li><a href="Reference/Global_Objects/Int32Array" title="The Int32Array typed array represents an array of twos-complement 32-bit signed integers in the platform byte order. If control over byte order is needed, use DataView instead. The contents are initialized to 0. Once established, you can reference elements in the array using the object's methods, or using standard array index syntax (that is, using bracket notation)."><code>Int32Array</code></a></li>
<li><a href="Reference/Global_Objects/Uint32Array" title="Uint32Array表示一个由基于平台字节序的32位无符号字节组成的数组.如果需要对字节顺序进行控制(译者注:即 littleEndian 或 bigEndian),请使用DataView代替.数组中每个元素的初始值都是0.一旦创建，你可以用对象的方法引用数组里的元素，或者使用标准的数组索引语法（即，使用中括号）。"><code>Uint32Array</code></a></li>
<li><a href="Reference/Global_Objects/Float32Array" title="Float32Array 类型数组代表的是平台字节顺序为32位的浮点数型数组(对应于 C 浮点数据类型) 。 如果需要控制字节顺序， 使用 DataView 替代。其内容初始化为0。一旦建立起来，你可以使用这个对象的方法对其元素进行操作，或者使用标准数组索引语法 (使用方括号)。"><code>Float32Array</code></a></li>
<li><a href="Reference/Global_Objects/Float64Array" title="Float64Array 类型数组代表的是平台字节顺序为64位的浮点数型数组(对应于 C 浮点数据类型) 。 如果需要控制字节顺序， 使用 DataView 替代。其内容初始化为0。一旦建立起来，你可以使用这个对象的方法对其元素进行操作，或者使用标准数组索引语法 (使用方括号)。"><code>Float64Array</code></a></li>
<li><a href="Reference/Global_Objects/TypedArray/@@species" title="TypedArray[@@species] 访问器属性返回类型化数组的构造器。"><code>get %TypedArray%[@@species]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/48">Firefox 48</a>)</li>
</ul>
<h3 id="表达式和操作符">表达式和操作符</h3>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
</ul>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator">Spread operator for arrays</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/16">Firefox 16</a>)

  <ul>
<li>use <code>Symbol.iterator</code> property (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
</ul>
</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator">Spread operator for function calls</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/27">Firefox 27</a>)
  <ul>
<li>use <code>Symbol.iterator</code> property (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
</ul>
</li>
</ul>
<h3 id="语句">语句</h3>
<ul>
<li><a href="Reference/Statements/for...of" title="for...of语句在可迭代对象（包括 Array，Map，Set，String，TypedArray，arguments 对象等等）上创建一个迭代循环，调用自定义迭代钩子，并为每个不同属性的值执行语句"><code>for...of</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/13">Firefox 13</a>)

  <ul>
<li>works in terms of <code>.iterator()</code> and <code>.next()</code> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/17">Firefox 17</a>)</li>
<li>use <code>"@@iterator"</code> property (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/27">Firefox 27</a>)</li>
<li>use <code>Symbol.iterator</code> property (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/36">Firefox 36</a>)</li>
</ul>
</li>
</ul>
<h3 id="函数">函数</h3>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/rest_parameters">Rest parameters</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/15">Firefox 15</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/default_parameters">Default parameters</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/15">Firefox 15</a>)
  <ul>
<li>Parameters without defaults after default parameters (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/26">Firefox 26</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters#Destructured_parameter_with_default_value_assignment" title="Default function parameters allow formal parameters to be initialized with default values if no value or undefined is passed.">Destructured parameters with default value assignment</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/41">Firefox 41</a>)</li>
</ul>
</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions">Arrow functions</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/22">Firefox 22</a>)</li>
<li><a href="Reference/Statements/function*" title="function* 这种声明方式(function关键字后跟一个星号）会定义一个生成器函数 (generator function)，它返回一个  Generator  对象。"><code>Generator function</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/26">Firefox 26</a>)
  <ul>
<li><a href="Reference/Operators/yield" title="yield 关键字用来暂停和恢复一个生成器函数（(function* 或遗留的生成器函数）。"><code>yield</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/26">Firefox 26</a>)</li>
<li><a href="Reference/Operators/yield*" title="yield* 表达式用于委托给另一个generator 或可迭代对象。"><code>yield*</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/27">Firefox 27</a>)</li>
</ul>
</li>
<li><a href="Reference/Functions/arguments/@@iterator" title="@@iterator 属性的初始值是和 Array.prototype.values 属性的初始值相同的对象。"><code>arguments[@@iterator]</code></a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/46">Firefox 46</a>)</li>
</ul>
<h3 id="其他特性">其他特性</h3>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Numeric_literals">Binary and octal numeric literals</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/25">Firefox 25</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings">Template strings</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/34">Firefox 34</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Property_definitions">Object initializer: shorthand property names</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/33">Firefox 33</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">Object initializer: computed property names</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/34">Firefox 34</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Method_definitions">Object initializer: shorthand method names</a> (<a href="https://developer.mozilla.org/en-US/Firefox/Releases/34">Firefox 34</a>)</li>
</ul>
<h2 id="和_ES2015_规范不兼容的特性">和 ES2015 规范不兼容的特性</h2>
<p>Firefox (部分)实现了以下特性，但是与规范不兼容。原因有如下几个：Firefox 是依据 ES 6 规范的早期草案来实现，或者 Firefox 是作为实验性特性来实现，而当时与之类似的特性还没有被添加到 ES2015 规范中。</p>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">Legacy iterators and generators</a> (<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JS 1.7</a>, <a href="https://developer.mozilla.org/en-US/Firefox/Releases/2">Firefox 2</a>)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructuring assignment</a> (<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JS 1.7</a>, <a href="https://developer.mozilla.org/en-US/Firefox/Releases/2">Firefox 2</a>) (ES2015 compliance <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055984" rel="noopener" title="FIXED: ES6 meta: Destructuring assignment / binding">bug 1055984</a>)</li>
<li><a href="Reference/Statements/const" title="常量是块级作用域，很像使用 let 语句定义的变量。常量的值不能通过重新赋值来改变，并且不能重新声明。"><code>const</code></a> (<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.5">JS 1.5</a>, Firefox 1.0) (ES2015 compliance <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=950547" rel="noopener" title="FIXED: Make let and const ES6-compatible">bug 950547</a> implemented in Firefox 51)</li>
<li><a href="Reference/Statements/let" title="let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是，var声明的变量只能是全局或者整个函数块的。"><code>let</code></a> (<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JS 1.7</a>, <a href="https://developer.mozilla.org/en-US/Firefox/Releases/2">Firefox 2</a>) (ES2015 compliance <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=950547" rel="noopener" title="FIXED: Make let and const ES6-compatible">bug 950547</a> implemented in Firefox 51)</li>
</ul>
<h2 id="相关链接">相关链接</h2>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_7_support_in_Mozilla">Mozilla 支持的 ECMAScript 2016 特性</a></li>
<li><a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts" rel="noopener">ECMAScript 2015 规范草案</a></li>
<li><a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=694100" rel="noopener">Mozilla ES2015 tracking bug</a></li>
<li><a class="external" href="https://kangax.github.io/compat-table/es6/" rel="noopener" title="https://kangax.github.io/compat-table/es6/">ECMAScript 2015 的浏览器支持情况</a></li>
</ul>
</div>
</article>